package org.lbm.flow.agent;

import org.lbm.flow.context.FlowContext;

/**
 * 智能体接口
 * 定义智能体的基本行为
 *
 * @author insist
 * @since 2025-08-01
 */
public interface Agent {

    /**
     * 获取智能体ID
     */
    String getId();

    /**
     * 获取智能体名称
     */
    String getName();

    /**
     * 获取智能体描述
     */
    String getDescription();

    /**
     * 执行智能体任务
     * @param context 工作流上下文
     * @return 执行结果
     */
    AgentResult execute(FlowContext context);

    /**
     * 检查智能体是否可用
     */
    default boolean isAvailable() {
        return true;
    }

    /**
     * 获取智能体类型
     */
    default String getType() {
        return this.getClass().getSimpleName();
    }
}
